$(function () {
  /* 输入框填写任务名称按回车添加任务 */
  $('#ipt').keyup(function (event) {
    if (event.keyCode == 13) {
      if ($('#ipt').val().trim() === '') return alert('请输入任务名称')
      addTodoItem()  
      delTodoItem() 
      isCheckedToDo() 
      doneTaskNumber()
      allTaskNumber()
      delAllTask()
    }
  })  
})

/* 添加任务项 */
function addTodoItem() {  
  const li = `
  <li class="todo-item">
    <input type="checkbox">
    ${$('#ipt').val().trim()}
    <button class="del-item">删除</button>
  </li>`
  $('#lis').prepend(li)
  $('#ipt').val('')
  $('.empty').css('display', 'none')
  $('#done').prop('checked', false)
}

/* 删除任务项 */
function delTodoItem() {
  $('.del-item').off('click')
  $('.del-item').on('click', function () {
    if (!confirm('确认要删除该任务吗?')) return
    $(this).parent().remove()
    doneTaskNumber()
    allTaskNumber()  
    if ($('.todo-item input').length === $('.todo-item input:checked').length)
    $('#done').prop('checked', true)
    if ($('#lis').children().length != 1) return
    $('.empty').css('display', 'block')
    $('#done').prop('checked', false)
  })  
}

/* 全选和反选 */
function isCheckedToDo(){    
    $('#done').click(function () {
      doneTaskNumber()
      $('.todo-item input').each(function () {
        $(this).prop('checked', $('#done').prop('checked'))
      })
    })

    iptArr = $('.todo-item input')
    iptArr.click(function () {
      doneTaskNumber()
      for (let i = 0; i < iptArr.length; i++) {
        $('#done').prop('checked', true)
        if (!iptArr[i].checked) {
          $('#done').prop('checked', false)
          break
        }
      }
    })             
}

/* 已完成任务 */
function doneTaskNumber(){
    let count = 0;
    count = $('.todo-item input:checked').length;
    $('.done').text(count);
}

/* 全部任务 */
function allTaskNumber(){     
    $('.all').text($('.todo-item input').length) 
}

/* 清除所有选中任务 */
function delAllTask(){
    $('#del_done').off('click')    
    $('#del_done').click(function(){
        if ($('.todo-item input').length <= 0) return alert('请先添加任务')
        if ($('.todo-item input:checked').length <= 0 )
          return alert('还没有已完成任务')
        if (!confirm('确认要删除该任务吗?')) return
        $('.todo-item input:checked').parent().remove()
        doneTaskNumber()
        allTaskNumber()
        if ($('#lis').children().length != 1) return
        $('.empty').css('display', 'block')
        $('#done').prop('checked', false)
    })    
}